#include<stdio.h>
#include<time.h>
#include<sys/time.h>

void nowtime_ns()
{
    printf("---------------------------struct timespec---------------------------------------\n"); 
    printf("[time(NULL)]     :     %ld\n", time(NULL)); //当前时间(自1970年1月1日(00:00:00 GMT)以来的秒数)
    struct timespec ts;	//包含秒和纳秒(精度可达纳秒)，自1970年1月1日(00:00:00 GMT)以来的时间
    clock_gettime(CLOCK_REALTIME, &ts); //获取系统当前时间，从1970年1月1日算起
    printf("clock_gettime : tv_sec=%ld, tv_nsec=%ld\n", ts.tv_sec, ts.tv_nsec);
    
    struct tm t;
    char date_time[64];
	//格式化日期时间，保存到date_time
	//localtime_r将时间戳转为日历格式，线程安全
    strftime(date_time, sizeof(date_time), "%Y-%m-%d %H:%M:%S", localtime_r(&ts.tv_sec, &t));
    printf("clock_gettime : date_time=%s, tv_nsec=%ld\n", date_time, ts.tv_nsec);
}

int main(int argc, char* argv[])
{
    nowtime_ns();
    printf("\n");
    return 0;
}
